classDiagram
    class Component {
        <<interface>>
        +operation(): string
    }
    class ConcreteComponent {
        +operation(): string
    }
    class Decorator {
        -component: Component
        +operation(): string
    }
    class ConcreteDecoratorA {
        +operation(): string
    }
    class ConcreteDecoratorB {
        +operation(): string
    }

    Component <|.. ConcreteComponent
    Component <|.. Decorator
    Decorator "1" o-- "1" Component : aggregates
    ConcreteDecoratorA ..|> Decorator
    ConcreteDecoratorB ..|> Decorator
